const jwt = require('jsonwebtoken')

// 创建token，并将要保密的数据进行token加密，并且设置有效时间
function createToken (data) {
  return jwt.sign({
    data,
    iat: Math.floor(Date.now() / 1000) + (24 * 60 * 60)
  }, 'secret')
}

// 客户端请求的token后端的token进行匹配
function verifyToken (req, res) {
  return new Promise( (resolve, reject) => {

    // token是从客户端登录成功后，后端会给用户返回一个token值
    // token一般会绑定在请求头中
    const token = req.headers.authorization
    try {
      // 对token进行解码，并且验证token是否正确
      var decoded = jwt.verify(token, 'secret')
      resolve(decoded.data)
    } catch (err) {
      res.json( {err: -1, msg:'token invaild'} )
    }
  })
}

module.exports = {
  createToken,
  verifyToken
}